'''
# encoding=utf-8

'''
import warnings

warnings.filterwarnings('ignore')
#显示中文
from pylab import *  #显示中文

mpl.rcParams['font.sans-serif'] = ['SimHei']  #显示中文
#画图中显示负号
import matplotlib

matplotlib.rcParams['axes.unicode_minus'] = False

import numpy as np
import pandas as pd
from sklearn.mixture import GaussianMixture
from sklearn.metrics import accuracy_score, roc_curve, roc_auc_score, classification_report

# 使用高斯混合模型，完成以下操作
# 1.	数据读取
# a)	读取数据HeightWeight.csv（10分）
data = pd.read_csv('HeightWeight.csv')
# b)	数据第一列为y，后面的数据为x进行切分（10分）
data_x = data[data.columns[1:]]
data_y = data[data.columns[0]]
data.head()
# 2.	模型处理
# a)	创建高斯混合模型，聚类成2个簇（10分）
gmm = GaussianMixture(n_components=2, covariance_type='diag', random_state=28)
# b)	拟合数据信息（10分）
gmm.fit(data_x)
# c)	打印模型均值（10分）
print ('均值 = \n', gmm.means_)
# d)	打印模型方差（10分）
print ('方差 = \n', gmm.covariances_)
# e)	打印模型预测值（10分）
y_pred = gmm.predict(data_x)
# 3.	模型评估
# a)	使用模型真实值和预测值比较，计算准确率（10分）
print(accuracy_score(data_y, y_pred))
# b)	计算roc曲线和auc数值（10分）
y_prob = gmm.predict_proba(data_x);print(data_y)
fpr, tpr, th = roc_curve(data_y, y_prob[:, 1] )
plt.plot(fpr,tpr)
plt.show()
# c)	打印分类报告（10分）
print(classification_report(data_y, y_pred))



